package com.smedi.ismedi.personnel.core.port.adapter.service;

import com.smedi.ismedi.organization.api.dto.response.HrOrganizationResponse;
import com.smedi.ismedi.organization.api.dto.response.ProjectOrganizationResponse;
import com.smedi.ismedi.personnel.core.domain.aggregatemodel.model.Organization;
import com.smedi.ismedi.personnel.core.port.adapter.persistence.dto.OrganizationQuery;
import com.smedi.ismedi.web.starter.common.ResponseData;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * @Author: xulinjun
 * @Date: 2021-6-10 20:45
 */
public interface OrganizationRemoteApiService {
    Boolean checkHrOrganizationAvailable(Long hrOrganizationId);

    Boolean checkProjectOrganizationAvailable(Long projectOrganizationId);

    HrOrganizationResponse getHrOrganizationView(Long hrOrganizationId);

    ProjectOrganizationResponse getProjectOrganizationView(Long projectOrganizationId);

    List<Long> getHrOrganizationChildrenOrgIdList(Long hrOrganizationId);

    List<Long> getProjectOrganizationChildrenOrgIdList(Long projectOrganizationId);

    Map<Long, String> getHrOrganizationChildrenOrgMap(Long hrOrganizationId);

    Map<Long, String> getProjectOrganizationChildrenMap(Long hrOrganizationId);

    HrOrganizationResponse getTopHrOrganizationScopeList(List<Long> assignmentHrOrganizationIds, boolean showAll);

    HrOrganizationResponse getHrOrganizationRoot();

    List<ProjectOrganizationResponse> getAllProjectOrganizationsByProjectId(Long projectId);

    List<Long> getParentHrOrganizationIdsByHrOrganizationId(Long hrOrganizationId);

    List<Long> getAllHrOrganizationIdsWhenYouAreInCompanyLevel(List<Long> internalAssignmentHrOrganizationIds);

    List<HrOrganizationResponse> getAllHrOrganization();

    List<HrOrganizationResponse> getQueryHrOrganizationList(List<Long> hrOrganizationIds);


    Organization getOrganizationOne(OrganizationQuery organizationQuery);

    List<Organization> getOrganizationList(OrganizationQuery organizationQuery);
}
